package com.qianying.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.qianying.comment.CommonResult;
import com.qianying.entity.SysRole;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 系统角色表 服务类
 * </p>
 *
 * @author check
 * @since 2025-07-15
 */
public interface SysRoleService extends IService<SysRole> {

    /**
     * 分页查询角色列表
     *
     * @param page    分页对象
     * @param sysRole 查询条件
     * @return 分页结果
     */
    CommonResult<IPage<SysRole>> getPage(Page<SysRole> page, SysRole sysRole);

    /**
     * 根据ID查询角色详情
     *
     * @param id 主键ID
     * @return 角色详情
     */
    CommonResult<SysRole> getByRoleId(Long id);

    /**
     * 新增角色
     *
     * @param sysRole 角色信息（ID需为空）
     * @return 操作结果
     */
    CommonResult<?> saveRole(SysRole sysRole);

    /**
     * 更新角色
     *
     * @param sysRole 角色信息（需包含ID）
     * @return 操作结果
     */
    CommonResult<?> updateRole(SysRole sysRole);

    /**
     * 更新角色状态（启用/禁用）
     *
     * @param id     主键ID
     * @param status 状态值（0:启用,1:禁用）
     * @return 操作结果
     */
    CommonResult<?> updateStatus(Integer id, Integer status);

    /**
     * 根据ID删除角色
     *
     * @param id 主键ID
     * @return 操作结果
     */
    CommonResult<?> removeById(Integer id);

    /**
     * 查询所有角色（不分页）
     *
     * @return 角色列表
     */
    CommonResult<List<SysRole>> getAll();

    /**
     * 将角色列表转换为简化Map（key:角色ID, value:角色名称）
     * @return 角色名称Map集合
     */
    CommonResult<Map<Long, String>> getRoleNameMap();
}
